package com.nuanshui.heatedloan.userinfo.facade;

import com.nuanshui.framework.exception.BizException;
import org.apache.ibatis.annotations.Param;

/**
 * Created by zxh on 2017/2/10.
 */

/**
 * 用户推荐相关接口
 */
public interface UserStateService {

    /**
     * 是否是测试用户
     *
     * @param sourceUserId
     * @return
     */
    Long isTestUser(String sourceUserId);

    /**
     * 获取用户来自那个渠道
     *
     * @param userId
     * @return
     */
    String getUserChannel(String userId);

    /**
     * 设置用户注册的渠道
     * eg.应用宝 豌豆荚
     *
     * @param userId
     * @param channel
     */
    void setUserChannel(String userId, String channel);

    /**
     * 更新 用户被查看次数
     *
     * @param userId
     * @param count
     */
    void updateViewCount(String userId, Long count) throws BizException;

    /**
     * 通过 nick 字段查找用户
     *
     * @param nick
     * @return
     */
    Integer userCountByNick(String nick);

    Integer userCountByNick(String nick,String userId);

    /**
     * 删除用户(实际上是把更改archive字段修改成false)
     *
     * @param id
     * @return
     */
    int undelete(String id);

    /**
     * 激活用户
     *
     * @param id
     */
    void activateUser(String id);

    /**
     * 对某个用户的背景图进行点赞
     */
    void praiseUser(String sourceUserId, String targetUserId, String selfhoodImg);

    /**
     * 判断是否点咱过1表示点赞过 0表示未点赞
     *
     * @param sourceUserId
     * @param targetUserId
     * @param selfhoodImg
     * @return
     */
    Long isPraisedUser(@Param("sourceUserId") String sourceUserId, @Param("targetUserId") String targetUserId, @Param("selfhoodImg") String selfhoodImg);

    /**
     * 获取未查看的消息个数
     *
     * @param
     * @author guohao
     * @date 2015年5月7日 下午1:44:36
     */
    int findNotReadMessage();

    /**
     * @param
     * @author guohao
     * @date 2015年5月7日 下午1:44:54
     */
    void updateNotReadNum(String userId, Integer num);

    /**
     * 绑定手机号状态
     * @param @param userId
     * @param @return
     * @author guohao
     * @date 2017年1月11日 下午3:45:16
     * @since $
     */
    boolean bindPhoneStatus(String userId);
}
